package com.animee.health.food_grid;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

import com.animee.health.R;
import com.animee.health.bean.FoodBean;

import java.util.List;

/**
 * 自定义一个适配器, 将数据填充到对应的View中
 */
public class FoodGridAdapter extends BaseAdapter {
    // 表示list所在的activity
    Context context;
    // 传入数据源list集合
    List<FoodBean> mDatas;

    // 通过构造函数传入进行初始化
    public FoodGridAdapter(Context context, List<FoodBean> mDatas) {
        this.context = context;
        this.mDatas = mDatas;
    }

    @Override
    public int getCount() {
        return mDatas.size();
    }
    // 返回条目的数量,集合的长度

    // 获取与数据集中指定位置关联的数据项
    @Override
    public Object getItem(int position) {
        return mDatas.get(position);
    }

    // 返回指定位置
    @Override
    public long getItemId(int position) {
        return position;
    }


    /*取得指定位置的View*/
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // 1.声明ViewHolder
        ViewHolder holder = null;
        if (convertView == null) {  // 2.判断是否有复用的view，如果没有就创建
            // 加载布局文件
            convertView = LayoutInflater.from(context).inflate(R.layout.item_foodgrid, null);
            holder = new ViewHolder(convertView);
            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }
        // 获取指定位置的数据
        FoodBean foodBean = mDatas.get(position);
        // 获得iv后 ,设置指定资源
        holder.iv.setImageResource(foodBean.getPicId());
        // 设置tv的文本显示
        holder.tv.setText(foodBean.getTitle());
        return convertView;
    }

    class ViewHolder {
        // 返回的两个控件
        ImageView iv;
        TextView tv;

        // 在构造函数中进行声明
        public ViewHolder(View view) {
            // 传入view后声明
            iv = view.findViewById(R.id.item_grid_iv);
            tv = view.findViewById(R.id.item_grid_tv);
        }
    }
}
